package dict

// Dict 定义字典的接口类型
type Dict[K comparable, V any] interface {
	// Set 设置键值对
	Set(key K, val V)
	// Update 更新字典
	Update(items map[K]V)
	// Delete 删除键值对
	Delete(keys ...K)
	// HasAll 判断所有指定键值对是否存在
	HasAll(keys ...K) bool
	// HasAny 判断任一指定元素是存在
	HasAny(keys ...K) bool
	// Get 询查键值对
	Get(key K) (V, bool)
	// GetLength 获取字典长度
	GetLength() int
	// GetKeys 获取字典中所有的键
	GetKeys() []K
	// GetValues 获取字典中所有的值
	GetValues() []V
	// GetMap 获取Map
	GetMap() map[K]V

	// Range 遍历并获取每个元素
	Range(fn func(key K, val V))
	// Filter 从字典中过滤出符合要求的键值对
	Filter(fn func(key K, val V) bool) map[K]V
	// Transform 遍历并更新每个元素
	Transform(fn func(key K, val V) V)
	// Clear 清空字典
	Clear()
}
